/**
 * Created by JetBrains PhpStorm.
 * User: taoqili
 * Date: 12-1-30
 * Time: 下午12:50
 * To change this template use File | Settings | File Templates.
 */



var wordImage = {};
//(function(){
var g = baidu.g,
  flashObj, flashContainer;

wordImage.init = function (opt, callbacks) {
  showLocalPath("localPath");
  //createCopyButton("clipboard","localPath");
  createFlashUploader(opt, callbacks);
  addUploadListener();
  addOkListener();
};

function hideFlash() {
  flashObj = null;
  flashContainer.innerHTML = "";
}

function addOkListener() {
  dialog.onok = function () {
    if (!imageUrls.length) return;
    var urlPrefix = editor.getOpt('imageUrlPrefix'),
      images = domUtils.getElementsByTagName(editor.document, "img");
    editor.fireEvent('saveScene');
    for (var i = 0, img; img = images[i++];) {
      var src = img.getAttribute("word_img");
      if (!src) continue;
      for (var j = 0, url; url = imageUrls[j++];) {
        if (src.indexOf(url.original.replace(" ", "")) != -1) {
          img.src = urlPrefix + url.url;
          img.setAttribute("_src", urlPrefix + url.url);  //同时修改"_src"属性
          img.setAttribute("title", url.title);
          domUtils.removeAttributes(img, ["word_img", "style", "width", "height"]);
          editor.fireEvent("selectionchange");
          break;
        }
      }
    }
    editor.fireEvent('saveScene');
    hideFlash();
  };
  dialog.oncancel = function () {
    hideFlash();
  }
}

/**
 * 绑定开始上传事件
 */
function addUploadListener() {
  g("upload").onclick = function () {
    flashObj.upload();
    this.style.display = "none";
  };
}

function showLocalPath(id) {
  //单张编辑
  var img = editor.selection.getRange().getClosedNode();
  var images = editor.execCommand('wordimage');
  if (images.length == 1 || img && img.tagName == 'IMG') {
    g(id).value = images[0];
    return;
  }
  var path = images[0];
  var leftSlashIndex = path.lastIndexOf("/") || 0,  //不同版本的doc和浏览器都可能影响到这个符号，故直接判断两种
    rightSlashIndex = path.lastIndexOf("\\") || 0,
    separater = leftSlashIndex > rightSlashIndex ? "/" : "\\";

  path = path.substring(0, path.lastIndexOf(separater) + 1);
  g(id).value = path;
}

function createFlashUploader(opt, callbacks) {
  //由于lang.flashI18n是静态属性，不可以直接进行修改，否则会影响到后续内容
  var i18n = utils.extend({}, lang.flashI18n);
  //处理图片资源地址的编码，补全等问题
  for (var i in i18n) {
    if (!(i in {"lang": 1, "uploadingTF": 1, "imageTF": 1, "textEncoding": 1}) && i18n[i]) {
      i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]);
    }
  }
  opt = utils.extend(opt, i18n, false);
  var option = {
    createOptions: {
      id: 'flash',
      url: opt.flashUrl,
      width: opt.width,
      height: opt.height,
      errorMessage: lang.flashError,
      wmode: browser.safari ? 'transparent' : 'window',
      ver: '10.0.0',
      vars: opt,
      container: opt.container
    }
  };

  option = extendProperty(callbacks, option);
  flashObj = new baidu.flash.imageUploader(option);
  flashContainer = $G(opt.container);
}

function extendProperty(fromObj, toObj) {
  for (var i in fromObj) {
    if (!toObj[i]) {
      toObj[i] = fromObj[i];
    }
  }
  return toObj;
}

//})();

function getPasteData(id) {
  baidu.g("msg").innerHTML = lang.copySuccess + "</br>";
  setTimeout(function () {
    baidu.g("msg").innerHTML = "";
  }, 5000);
  return baidu.g(id).value;
}

function createCopyButton(id, dataFrom) {
  baidu.swf.create({
      id: "copyFlash",
      url: "fClipboard_ueditor.swf",
      width: "58",
      height: "25",
      errorMessage: "",
      bgColor: "#CBCBCB",
      wmode: "transparent",
      ver: "10.0.0",
      vars: {
        tid: dataFrom
      }
    }, id
  );

  var clipboard = baidu.swf.getMovie("copyFlash");
  var clipinterval = setInterval(function () {
    if (clipboard && clipboard.flashInit) {
      clearInterval(clipinterval);
      clipboard.setHandCursor(true);
      clipboard.setContentFuncName("getPasteData");
      //clipboard.setMEFuncName("mouseEventHandler");
    }
  }, 500);
}

createCopyButton("clipboard", "localPath");
